import api from './api.js';
import request from './request.js';
console.log(request, 'request');

// 报错统一处理 text->文案，类型为提示框时，最多7个汉字长度；callback -> 回调
// type: toast -> 提示框， model -> 模态框（含确定按钮） modelDouble -> 模态框双按钮
function requestErrorTip (type, text, callback, cancelBack) {
	switch(type) {
	case 'toast':
		// 提示框
		uni.showToast({
			title: text,
			icon: 'none',
			duration: 3000,
			success: () => {
				callback && callback();
			}
		});
		break;
	case 'model':
		// 模态框
		uni.showModal({
			title: '温馨提示',
			content: text,
			showCancel: false, // 隐藏取消按钮
			success: function (res) {
				// 确认按钮
				if (res.confirm) {
					callback && callback();
				}
			}
		});
		break;
	default:
		uni.showModal({
			title: '温馨提示',
			content: text,
			success: function (res) {
				// 确认按钮
				if (res.confirm) {
					callback && callback();
				} else if (res.cancel) {
					cancelBack && cancelBack();
				}
			}
		});
		break;
	}
	// 提示框
	// if (type === 'toast') {
	// 	uni.showToast({
	// 		title: text,
	// 		icon: 'none',
	// 		success: () => {
	// 			callback && callback();
	// 		}
	// 	});
	// 	return;
	// }
	
	// // 模态框
	// if (type === 'model') {
	// 	uni.showModal({
	// 		title: '温馨提示',
	// 		showCancel: false,
	// 		content: text,
	// 		success: function (res) {
	// 			// 确认按钮
	// 			if (res.confirm) {
	// 				callback && callback();
	// 			}
	// 		}
	// 	});
	// 	return;
	// }
	
	// uni.showModal({
	// 	title: '温馨提示',
	// 	content: text,
	// 	success: function (res) {
	// 		// 确认按钮
	// 		if (res.confirm) {
	// 			callback && callback();
	// 		} else if (res.cancel) {
	// 			cancelBack && cancelBack();
	// 		}
	// 	}
	// });
};

//手机号校验
function checkMobileReg (mobile) {
	const mobileReg = /^1(3|4|5|6|7|8|9)\d{9}$/; // 手机号校验规则
	return mobileReg.test(mobile);
}

// 获取当前日期
function getDate () {
	const myDate = new Date();
	let year = myDate.getFullYear();    //获取完整的年份(4位,1970-????)
	let month = myDate.getMonth() + 1;       //获取当前月份(0-11,0代表1月)
	let day = myDate.getDate();        //获取当前日(1-31)
	let hour = myDate.getHours();       //获取当前小时数(0-23)
	let minute = myDate.getMinutes();     //获取当前分钟数(0-59)
	let second = myDate.getSeconds();     //获取当前秒数(0-59)
	month = month < 10 ? '0' + month : month;
	day = day < 10 ? '0' + day : day;
	hour = hour < 10 ? '0' + hour : hour;
	minute = minute < 10 ? '0' + minute : minute;
	second = second < 10 ? '0' + second : second;
	return { year, month, day, hour, minute, second };
}

// 获取个人信息，并保存
function getInfoData (cb) {
	request({
		url: api['user']['info'],
		data: {},
		loading: false,
		success: (res) => {
			const { data } = res;
			uni.setStorage({
				key: 'userInfo',
				data: data,
				success: function() {
					cb && cb(data);
				}
			});
		},
		fail: (err) => {
			console.log(err);
		}
	})
}

// 存储token
function handleToken (token, mobile) {
	if (token) {
		uni.setStorage({
			key: 'token',
			data: token,
			success: function () {
				// 登陆成功，页面跳至“首页”
				uni.reLaunch({
					url: '/pages/index/index'
				});
			}
		});
	}
	if (mobile) {
		loginExam(mobile);
	}
}

// 登录(考试系统)
function loginExam (mobile) {
	// 登录(考试系统)
	request({
		url: api['exam']['login'],
		data: {
			account: mobile,
			password: 123456
		},
		success: (res) => {
			const { data, status } = res;
			if (status !== 300) {
				// 重新注册
				registExam(mobile);
				return false;
			}
			// 存储考试系统学生ID
			uni.setStorage({
				key: 'studentId',
				data: data['studentId']
			});
			// 存储考试系统token
			uni.setStorage({
				key: 'examToken',
				data: data['token']
			});
		},
		fail: (err) => {
			console.log(err);
		}
	})
}

// 注册(考试系统)
function registExam (phone) {
	// 登录(考试系统)
	request({
		url: api['exam']['regNew'],
		data: {
			phone: phone,
			password: 123456
		},
		success: (res) => {
			const { data, status } = res;
			if (status !== 300) {
				// 重新注册
				// registExam(phone);
				return false;
			}
			// 登录
			loginExam(phone);
		},
	})
}

// 个位数前面加“0”
function add0(m) {
	return m < 10 ? '0' + m : m;
}

// 时间戳转时间格式
function timeStampToDate(timeStamp) {
	//timeStamp是整数，否则要parseInt转换
	const time = new Date(timeStamp);
	const y = time.getFullYear();
	const m = time.getMonth()+1;
	const d = time.getDate();
	const h = time.getHours();
	const mm = time.getMinutes();
	const s = time.getSeconds();
	return y + '-' + add0(m) + '-' + add0(d) + ' ' + add0(h) + ':' + add0(mm) + ':' + add0(s);
}


export {
	requestErrorTip,
	checkMobileReg,
	getDate,
	getInfoData,
	handleToken,
	loginExam,
	registExam,
	add0,
	timeStampToDate
}